package Day017_缓冲流_转换流_序列化流_打印流.demo4_序列流.Test3_反序列化;

import Day017_缓冲流_转换流_序列化流_打印流.demo4_序列流.Test2_序列化.Person;

import java.io.FileInputStream;
import java.io.ObjectInputStream;

/**
 * @author zhangyan
 * @date 2020/5/9 14:02
 */
/*
    ObjectInputStream反序列化流，将之前使用ObjectOutputStream序列化的原始数据恢复为对象。

    构造方法:
            public ObjectInputStream(InputStream in) ： 创建一个指定InputStream的ObjectInputStream

    反序列化操作:
            如果能找到一个对象的class文件，我们可以进行反序列化操作，调用 ObjectInputStream 读取对象的方法：
            public final Object readObject () : 读取一个对象

 */
public class Test_ObjectInputStream类 {
    public static void main(String[] args) throws Exception{
        //使用ObjectInputStream反序列化一个Person对象

        //创建反序列化对象,关联数据源文件路径
        FileInputStream fis = new FileInputStream("Demo02\\aaa\\a.txt");
        ObjectInputStream ois = new ObjectInputStream(fis);

        //读取对象
        Person p = (Person) ois.readObject();
        //关闭流
        ois.close();
        //打印对象
        System.out.println(p); // 每次只能反序列一个对象(可以存对象集合)
    }
}
